package com.jiangnan.ui.activity

import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowCompat

abstract class BaseActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 告诉系统不为系统栏留出额外的内边距，
        // 这样内容就能绘制到状态栏和导航栏区域
        WindowCompat.setDecorFitsSystemWindows(window, false)
    }

    /**
     * 可选方法：对指定的根视图应用窗口 inset，
     * 例如将状态栏和导航栏的高度作为 padding 加入视图中，
     * 这样重要内容就不会被系统栏遮挡。
     *
     * 调用示例：
     *   setupWindowInsets(findViewById(R.id.root_layout))
     */
    protected fun setupWindowInsets(rootView: View) {
        ViewCompat.setOnApplyWindowInsetsListener(rootView) { view, insets ->
            // 获取系统栏的 inset
            val systemBarsInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            // 将这些 inset 作为 padding 设置给根视图
            view.setPadding(
                systemBarsInsets.left,
                systemBarsInsets.top,
                systemBarsInsets.right,
                systemBarsInsets.bottom
            )
            // 返回 insets，表示未消耗任何窗口 inset
            insets
        }
    }
}
